package br.unifor.cg.algoritmos;

import br.unifor.cg.formas.Ponto;

/**
 * Classe que implementa o algoritmo de Bresenham para circunferecia
 *
 */
public class BresenhamCirc extends Algoritmo {

	/**
	 * Metodo foi sobrescrito para utilizar o algoritmo de Bresenhan para circunferencia
	 */
	public void desenhaLinha(Ponto pInicial,Ponto pFinal){
		  int x, y, d;
		  int raio=(int)(Math.sqrt((pFinal.getX()-pInicial.getX())*(pFinal.getX()-pInicial.getX())+(pFinal.getY()-pInicial.getY())*(pFinal.getY()-pInicial.getY())));
		  x = 0;
		  y = raio;
		  d = 5/4 - raio;
		  
		  desenhaPontoCircunferecia(pInicial, x, y);

		  while (x < y){
		    x = x + 1;
		    if (d < 0)
		      d = d + 2*x + 1;
		    else {
		      y = y - 1;
		      d = d + 2*(x - y) + 1;
		    }
		    desenhaPontoCircunferecia(pInicial, x, y);
		  }
		}

}
